<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <style>
    span {
      color: red;
      font-weight: 600
    }
  </style>
</head>
<body>
  <h3>解决一直以来关于变量提升以及 let const 划分作用域等问题</h3>
  <ul>
    <li>
      1.let声明的变量，使用的是块级作用域，不同于使用var 声明的变量那样可以在包含他们的函数外访问(<span>包含关系是可以进行跨域访问的</span>)，块级作用域在包含他们的块或者for/if, tryCatch。。。之外是不能访问的
    </li>
    <li>
      块级作用域变量不能再声明之前去读写（暂存性死区）,函数中的话不能在声明前去获取
    </li>
    <li>使用let声明出现在循环体中与var的声明有完全不同的行为,不仅是在循环里引入了一个新的变量,每次迭代都会创建一个新的作用域.</li>
    <li>
      const声明的变量,拥有与 let相同的作用域规则，但是不能对它们重新赋值。
    </li>
  </ul> 
  <script src="./javascript.js"></script>
</body>
</html>